/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ru.ssau.berlin.ejb.facade;

import java.util.List;
import javax.ejb.Local;
import ru.ssau.berlin.entity.Person;
import ru.ssau.berlin.entity.PersonAttribute;
import ru.ssau.berlin.entity.PersonGroup;
import ru.ssau.berlin.entity.PersonParameter;
import ru.ssau.berlin.entity.PersonType;

/**
 *
 * @author Caesar
 */
@Local
public interface PersonFacadeLocal {

    void create(Person person);

    void edit(Person person);

    void remove(Person person);

    Person find(long id);

    List<Person> findAll();

    List<Person> findByName(String name);

    PersonType findPersonType(long id);

    PersonType findPersonType(String name);

    List<Person> findNonAchievers(PersonGroup faculty);

    List<Person> findInstructors();

    List<Person> findSalaries(PersonGroup group);

    List<Person> findStudents();

    List<PersonType> findPersonTypes();

    void createType(PersonType type);

    void editType(PersonType type);

    void removeType(PersonType type);

    void createAttribute(PersonAttribute attr);
    
    void editAttribute(PersonAttribute attr);
    
    void removeAttribute(PersonAttribute attr);

    PersonAttribute findPersonAttribute(long id);

    PersonAttribute findPersonAttribute(String name);

    List<PersonAttribute> findPersonAttributes();

    void createParameter(PersonParameter parameter);

    PersonParameter findParameter(long id);

    void removeParameter(PersonParameter parameter);

}
